package model_test;
import java.rmi.AlreadyBoundException;

import junit.framework.Assert;
import model.Vokabel;

import org.junit.Test;


public class VokabelTest
{

	
	@Test(expected = NullPointerException.class)
	public void vokableGermanNull()
	{
		Vokabel vok = new Vokabel(null, "to go", 1, 1);
	}
	
	@Test(expected = NullPointerException.class)
	public void vokableEnglishNull()
	{
		Vokabel vok = new Vokabel("gehen", null, 1, 1);
	}
	
	@Test(expected = IllegalArgumentException.class)
	public void lvlGermanAndLvLEnglish()
	{
		//german
		Vokabel vok = new Vokabel("gehen", "to go", 0, 1);
		vok = new Vokabel("gehen", "to go", 6, 1);
		
		//english
		vok = new Vokabel("gehen", null, 1, 0);
		vok = new Vokabel("gehen", null, 1, 6);
	}
	
	@Test 
	public void createVokable() throws AlreadyBoundException
	{
		Vokabel vok = new Vokabel("gehen", "to go", 1, 1);
		Assert.assertEquals("gehen", vok.getGerman());
		Assert.assertEquals("to go", vok.getEnglish());
		Assert.assertEquals(1, vok.getLvlGerman());
		Assert.assertEquals(1, vok.getLvlEnglish());
		
		vok.decreaseLvlGerman();
		Assert.assertEquals(1, vok.getLvlGerman());
		
		vok.decreaseLvlEnglish();
		Assert.assertEquals(1, vok.getLvlEnglish());
		
		for(int i = 0; i <= 3; i++)
		{
			vok.raiseLvlEnglish();
			vok.raiseLvlGerman();
		}
		
		Assert.assertEquals(5, vok.getLvlEnglish());
		Assert.assertEquals(5, vok.getLvlGerman());
		
		vok.raiseLvlEnglish();
		vok.raiseLvlGerman();
		
		Assert.assertEquals(5, vok.getLvlEnglish());
		Assert.assertEquals(5, vok.getLvlGerman());
		
		
		
	}
	
	@Test(expected = AlreadyBoundException.class)
	public void setId() throws AlreadyBoundException
	{
		Vokabel vok = new Vokabel("gehen", "to go", 1, 1);
		vok.setId("456");
		Assert.assertEquals("456", vok.getId());
		vok.setId("45");
	}
	
	@Test(expected = NullPointerException.class)
	public void setIdNull() throws AlreadyBoundException
	{
		Vokabel vok = new Vokabel("gehen", "to go", 1, 1);
		vok.setId(null);
		Assert.assertEquals("456", vok.getId());
		vok.setId("45");
	}
	
	
	
}
